//
// Created by alexa on 5/2/2024.
//

#ifndef ARTILLERYSYSTEM_COMBATUNIT_H
#define ARTILLERYSYSTEM_COMBATUNIT_H


#include "../_identifiable/Identifiable.h"
#include "../maintenance-crew/MaintenanceCrew.h"

float calculateDistance(float fromX, float fromY, float toX, float toY);

class CombatUnit : public Identifiable {
private:
    string name;
    string crewId;
    string missileId;
    float posX = 0;
    float posY = 0;
    vector<Specialization> requiredSpecializations;
public:
    float getPosX() const;

    void setPosX(float posX);

    float getPosY() const;

    void setPosY(float posY);

    explicit CombatUnit(const string &name);

    const string &getName() const;

    const vector<Specialization> &getRequiredSpecializations() const;

    void setRequiredSpecializations(const vector<Specialization> &requiredSpecializations);

    string getCrewId() const;

    void setCrewId(string crewId);

    const string &getMissileId() const;

    void setMissileId(string missileId);

    virtual void shoot() = 0;
};


#endif //ARTILLERYSYSTEM_COMBATUNIT_H
